/*
 * 设计模式 - 适配器模式
 * 原文: 将一个类的接口转换成客户希望的另一个接口
 * 使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作
 * 类适配器模式 (继承模式)
 * 对象适配器模式 (组合模式)
 * 组合优于继承
 */

IExpectedInterface client = new ExistObj();
Console.WriteLine(client.Name);
Adapter adapter = new Adapter();
client = adapter;
Console.WriteLine(client.Name);

/// <summary>
/// 已经存在的接口
/// </summary>
interface IExpectedInterface
{
    public string Name { get; set; }
}

/// <summary>
/// 原有的类,原先一直在使用的类
/// </summary>
class ExistObj : IExpectedInterface
{
    public string Name { get; set; } = "已经存在名称";
}

/// <summary>
/// 你新开发的类
/// </summary>
class YourObj
{
    public DateTime Birthday { get; set; } = DateTime.Now;
}


/// <summary>
/// 适配器  继承方式
/// </summary>
class Adapter : YourObj, IExpectedInterface
{
    public Adapter()
    {
        this.Name = base.Birthday.ToString("yyyy-MM-dd HH:mm:ss");
    }
}

///适配器  组合方式
class AdapterObject:IExpectedInterface
{
    public YourObj obj;
    public AdapterObject(){
        obj=new YourObj();
    }
}



